#!/usr/bin/env python
# -*- coding:utf-8 -*-

from django import forms
import os
'''Django的form表单不只支持前端，也支持对输入的验证
此例中，没有用form表单创建前端标签，而只是对用户提交的数据进行验证'''
class ArticleForm(forms.Form):
    title = forms.CharField(max_length=255,min_length=5)
    summary = forms.CharField(max_length=255,min_length=5)
    plate_id = forms.IntegerField()
    img = forms.ImageField()
    content = forms.CharField(min_length=10)

'''定义一个处理文件上传的函数：f是文件句柄
将request.FILE传入函数，打开一个文件，循环每个chunk（64k）写入到文件，直到传输完成；
chunk方法的原理就是一个yield函数，临时写到buffer里，小于2.5M临时存储到内存，大于就创建一个临时文件
存储的路径：每个用户有自己的文件夹，没有则创建；
'''
def upfile(request,f):
    img_path = 'statics/img'
    user_path = "%s/%s" % (img_path,request.user.userinfo.nickname)
    if not os.path.exists(user_path):
        os.mkdir(user_path)
    img_full_path = "%s/%s"%(user_path,f.name)
    with open(img_full_path,'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)
    return "/static/img/%s/%s" % (request.user.userinfo.nickname,f.name)